Linux环境变量
Contents
Linux 环境变量
很多程序和脚本都通过环境变量来获取系统信息,存储临时数据和配置信息。
Ubuntu配置文件在 /etc/profile/
什么是环境变量
bash shell 用一个叫做环境变量的特性来存储有关shell对话和工作环境的信息。这项特性允许你在内存存储数据,以便程序或者shell中运行的脚本能够轻松访问到他们。这也是存储持久数据的一种简便方法。
两类环境变量
- 全局变量
- 局部变量
全局变量
全局环境变量对于shell会话和所有生成的子shell都是可见的,局部变量则只对创建他们的shell可见。
系统在开始bash会话时就设置了一些全局环境变量,系统全局变量基本全是大写字母以进行区分。
查看全部变量,可以使用env
或者printenv
命令。显示特定的某个环境变量 printenv 变量
。
也可以使用echo 显示变量的值,这种方式必须在变量前加$. 这种方式还可以让变量变成参数。所以可以这样用ls \$ HOME
(没有反斜杠)
局部环境变量
局部环境变量只能在定义他们的进程中可见。系统也默认定义了标准的局部环境变量,不过也可以定义自己的局部变量,这些变量被称为用户定义局部变量。
set命令会显示为某个特定进程设置的所有环境变量,包括局部变量,全局变量以及用户定义变量。
设置用户定义变量
设置局部用户自定义变量
一旦启动了bash shell(或者执行一个shell脚本),就能创建在这个shell进程内可见的局部变量了。可以通过等号给环境变量赋值,值可以是数值或字符串。变量名、等号和值之间没有空格。
1 | echo $my_variable |
设置全局环境变量
创建全局变量的方法时先创建一个局部环境变量,然后再把它导入到全局环境中。这个过程使用export命令来完成。
1 | my_variable="I am Global now" |
删除环境变量
使用unset命令删除环境变量。使用unset时,不使用$
1 | echo $my_variable |
设置PATH环境变量
当你在shell命令行界面中输入一个外部命令时(参见第5章),shell必须搜索系统来找到对应的程序。PATH环境变量定义了用于进行命令和程序查找的目录。
添加新目录到path环境变量中
1 | 考下面的例子。 |
注销或者重启可以使修改生效,如果要使添加的环境变量马上生效
1 | source /etc/profile |
环境变量文件的更改
可以直接添加到环境变量PATH
中。$PATH
表示变量PATH
的值,包含已有的目录
这种方法需要注意路径的顺序,如果遇到有同名的命令,那么PATH
里面哪个目录先被查询,则那个目录下的命令就会被先执行:表示分隔符
。
1 | 加到PATH末尾 |
环境变量持久化
可以利用这些文件创建自己的永久性全局变量或局部变量。对全局环境变量来说(Linux系统中所有用户都需要使用的变量) ,可能更倾向于将新的或修改过的变量设置放在/etc/profile文件中,但这可不是什么好主意。如果你升级了所用的发行版。这个文件也会跟着更新,那你所有定制过的变量设置可就都没有了。
最好是在/etc/profile.d目录中创建一个以.sh结尾的文件。把所有新的或修改过的全局环境变量设置放在这个文件中。
在大多数发行版中,存储个人用户永久性bash shell变量的地方是 HOME/.bashrc文件。这一点适用于所有类型的shell进程。但如果设置了 BASH_ENV 变量,那么记住,除非它指向的是$HOME/.bashrc,否则你应该将非交互式shell的用户变量放在别的地方。
Author: corn1ng
Link: https://corn1ng.github.io/2017/10/01/Linux 环境变量/
License: 知识共享署名-非商业性使用 4.0 国际许可协议